package proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 我的调用程序
 */
public class MyInvocationHandler implements InvocationHandler {

    public Object target;

    /**
     * 无参构造函数/方法
     */
    MyInvocationHandler(){
        super();
    }

    /**
     * 有参构造函数/方法
     * @param target
     */
    MyInvocationHandler(Object target){
        super();
        this.target = target;
    }

    /**
     *
     * @param proxy 就是代理对象 ，newProxyInstance方法的返回对象
     * @param method 调用的方法
     * @param args  方法中的参数
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if("getName".equals(method.getName())){
            System.out.println("++++++before"+ method.getName() + "++++++");
            Object result = method.invoke(target,args);
            System.out.println("++++++after"+ method.getName() + "+++++++");
            return result;
        }else {
            Object result = method.invoke(target,args);
            return  result;
        }
    }

}
